import request from "../../utils/request"

let isSend = false

Page({

  /**
   * 页面的初始数据
   */
  data: {
    searchWord: "", // 搜索提示关键字
    hotList: [], // 热搜榜数据
    searchContent: "", // 搜索的关键字
    searchList: [], // 搜索数据列表
    historyList: [], // 历史搜索数据
  },

  // 获取搜索页初始化信息
  async getInitData() {
    // 获取提示搜索关键字
    const result = await request("/search/default")
    // 保存数据
    this.setData({
      searchWord: result.data.showKeyword
    })

    // 获取热搜榜数据
    const hotListData = await request("/search/hot/detail")
    // 保存数据
    this.setData({
      hotList: hotListData.data
    })
  },

  // 收集文本框录入的数据，并判断其有效性，及调用接口获取搜索数据列表
  handlerSearchContent(event) {
    // 拿到搜索的关键词
    const searchContent = event.detail.value.trim()
    // 保存数据
    this.setData({
      searchContent
    })

    // 简单的节流
    if (isSend) {
      return
    }

    isSend = true

    // 搜索音乐，获取搜索数据列表
    this.searchMusic()


    setTimeout(() => {
      isSend = false
    }, 300)
  },

  // 搜索音乐，获取搜索列表数据
  async searchMusic() {
    const { searchContent, historyList } = this.data // 拿到搜索关键字

    // 判断文本框有没有数据
    if (!searchContent) {
      this.setData({
        searchList: [] // 文本框没有数据，之前搜索的数据列表清空
      })
      return
    }

    // 获取音乐
    const searchListData = await request("/search", { keyWords: searchContent, limit: 10 })

    // 保存数据
    this.setData({
      searchList: (searchListData.result || {}).songs,
      history
    })

    // 判断历史数据中是否有输入的内容，如果有则删除
    if (historyList.indexOf(searchContent) !== -1) {
      historyList.splice(historyList.indexOf(searchContent), 1)
    }

    historyList.unshift(searchContent)

    // 保存数据
    this.setData({
      historyList
    })
    wx.setStorageSync("historyList", historyList);

  },

  // 读取缓存数据
  getHistoryListData() {
    const historyList = wx.getStorageSync("historyList");

    if (historyList) {
      this.setData({
        historyList
      })
    }
  },

  // 清空历史数据
  clearHistoryData() {
    wx.showModal({
      title: '删除提示',
      content: '您确定呀删除吗？',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            historyList: []
          })
          wx.removeStorageSync("historyList");
        }
      }
    })
  },

  // 清空文本框
  clearInput(){
    this.setData({
      searchContent: ""
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getInitData() // 获取搜索页初始化信息
    this.getHistoryListData() // 读取缓存数据

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})